/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.ucase.casemain.service;

import com.icinfo.cloud.provider.punish.api.vo.CasePartyRecordAdjustSaveReturnDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.*;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseInfoAdjustRecordVo;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseMainInfoVo;
import com.icinfo.framework.core.service.BaseService;

import java.util.List;

/**
 * 描述: 案件信息调整记录表 case_info_adjust_record 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年06月16日
 */
public interface ICaseInfoAdjustRecordService extends BaseService {

    /**
     * 【V1.3.0】描述：获取案件信息调整分页记录
     *
     * @param request {@link CaseInfoAdjustRecordPageRequest} 分页请求对象
     * @return List<CaseInfoAdjustRecordVo> 案件信息调整分页记录
     * @author xiangyuyu
     * @date 2022-06-16 19:48
     */
    List<CaseInfoAdjustRecordVo> getCaseInfoAdjustPageList(CaseInfoAdjustRecordPageRequest request);

    /**
     * 【V1.3.0】描述：保存案件信息调整记录
     *
     * @param saveDto {@link CaseInfoAdjustRecordDto}
     * @return int 保存成功记录数
     * @author xiangyuyu
     * @date 2022-06-16 19:48
     */
    int saveCaseInfoAdjustRecord(CaseInfoAdjustRecordDto saveDto);

    /**
     * 【V1.3.0】描述：查询案件信息调整记录
     *
     * @param request {@link CaseInfoAdjustRecordRequest}
     * @return Result<List<CaseInfoAdjustRecordVo>> 案件信息调整记录
     * @author xiangyuyu
     * @date 2022-06-16 19:48
     */
    List<CaseInfoAdjustRecordVo> getCaseInfoAdjustRecordList(CaseInfoAdjustRecordRequest request);

    /**
     * 【V1.3.0】描述：保存当事人调整信息
     *
     * @param saveDto {@link CasePartyInfoAdjustDto}
     * @return int 保存成功记录数
     * @author xiangyuyu
     * @date 2022-06-16 19:48
     */
    int saveAdjustInfoWithParty(CasePartyInfoAdjustDto saveDto);

    /**
     * 【V1.4.1】描述： 保存案由调整记录
     *
     * @author: zhengqiang
     * @date: 2022/8/23
     * @param: saveDto
     * @return {@link int}
     **/
    int saveAdjustInfoWithCaseReason(CaseReasonInfoAdjustDto saveDto);

    /**
     * 【V1.11.2】 描述：保存调整当事人信息
     *
     * @param saveDto 保存dto
     * @return {@link CasePartyRecordAdjustSaveReturnDto }
     * @author shishengyao
     * @date 2023/03/27
     */
    CasePartyRecordAdjustSaveReturnDto  saveAdjustPartyRecord(CasePartyRecordAdjustSaveDto saveDto);


    /**
     * 描述：审批通过之后更新调整当事人信息
     *
     * @param documentId 文档id
     * @return int
     * @author shishengyao
     * @date 2023/03/23
     */
    int updateAdjustPartyRecordAfterApproval(String documentId);

    /**
     * 描述：检查是否存在未完成的调整记录
     *
     * @param caseId 用例id
     * @return int
     * @author shishengyao
     * @date 2023/03/24
     */
    boolean isExistUndoneAdjustPartyRecord(String caseId);

    /**
     * 描述：获取调整当事人详情接口
     *
     * @param queryDto 查询dto
     * @return {@link CasePartyRecordAdjustSaveDto }
     * @author shishengyao
     * @date 2023/03/24
     */
    CasePartyRecordAdjustSaveDto  getAdjustPartyRecordDetail(AdjustPartyRecordDetailQueryDto queryDto);

    /**
     * 检查调整记录参数
     *
     * @param caseMainInfo 案例主要信息
     * @param saveDto      保存dto
     * @return {@link String }
     * @author shishengyao
     * @date 2023/03/27
     */
    String checkAndAssembleAdjustPartyRecordParam(CaseMainInfoVo caseMainInfo, CasePartyRecordAdjustSaveDto saveDto);


}
